package primalgorithms.math;

import java.util.HashMap;

public class _04RomanToInt {
    public static int romanToInt(String s) {
        /*首先建立一个HashMap来映射符号和值，然后对字符串从左到右来，
        如果当前字符代表的值不小于其右边，就加上该值；否则就减去该值。
        以此类推到最左边的数，最终得到的结果即是答案*/
        HashMap<Character,Integer> romanToInt = new HashMap<>(7);
        romanToInt.put('I',1);
        romanToInt.put('V',5);
        romanToInt.put('X',10);
        romanToInt.put('L',50);
        romanToInt.put('C',100);
        romanToInt.put('D',500);
        romanToInt.put('M',1000);
        int res = 0;
        for (int i = 0;i < s.length()-1;i++){
            if (romanToInt.get(s.charAt(i)) >= romanToInt.get(s.charAt(i+1))){
                res += romanToInt.get(s.charAt(i));
            }else {
                res -= romanToInt.get(s.charAt(i));
            }
        }
        res += romanToInt.get(s.charAt(s.length()-1));
        return res;
        /**
         * 如果是需要将int转化成罗马数字
         *  ==>  src.bank._12IntToRoman
         */
    }
}
